/******************************************************************************* * Copyright (c) 2000, 2008 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.jdt.ui.tests.refactoring; import java.io.IOException; import java.net.URL; import java.util.Enumeration; import junit.framework.Test; import org.osgi.framework.Bundle; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.Path; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IProject; import org.eclipse.jdt.core.IClasspathEntry; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.IPackageFragment; import org.eclipse.jdt.core.IPackageFragmentRoot; import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.ui.tests.refactoring.infra.RefactoringTestPlugin; public class InlineMethodTestSetup extends RefactoringTestSetup { private IPackageFragment fInvalid; private IPackageFragment fBugs; private IPackageFragment fSimple; private IPackageFragment fArgument; private IPackageFragment fNameConflict; private IPackageFragment fCall; private IPackageFragment fExpression; private IPackageFragment fControlStatement; private IPackageFragment fReceiver; private IPackageFragment fImport; private IPackageFragment fCast; private IPackageFragment fEnum; private IPackageFragment fGeneric; private IPackageFragment fBinary; private IPackageFragment fOperator; public InlineMethodTestSetup(Test test) { super(test); } protected void setUp() throws Exception { super.setUp(); IPackageFragmentRoot root= getDefaultSourceFolder(); fInvalid= root.createPackageFragment("invalid", true, null); fBugs= root.createPackageFragment("bugs_in", true, null); fSimple= root.createPackageFragment("simple_in", true, null); fArgument= root.createPackageFragment("argument_in", true, null); fNameConflict= root.createPackageFragment("nameconflict_in", true, null); fCall= root.createPackageFragment("call_in", true, null); fExpression= root.createPackageFragment("expression_in", true, null); fControlStatement= root.createPackageFragment("controlStatement_in", true, null); fReceiver= root.createPackageFragment("receiver_in", true, null); fImport= root.createPackageFragment("import_in", true, null); fCast= root.createPackageFragment("cast_in", true, null); fEnum= root.createPackageFragment("enum_in", true, null); fGeneric= root.createPackageFragment("generic_in", true, null); fBinary= root.createPackageFragment("binary_in", true, null); fOperator= root.createPackageFragment("operator_in", true, null); IJavaProject javaProject= getProject(); IProject project= javaProject.getProject(); copyFilesFromResources(project, "binary/classes", "*.class"); copyFilesFromResources(project, "binary_src/classes", "*.java"); IClasspathEntry[] classpath= javaProject.getRawClasspath(); IClasspathEntry[] newClasspath= new IClasspathEntry[classpath.length + 1]; System.arraycopy(classpath, 0, newClasspath, 0, classpath.length); IClasspathEntry binaryFolder= JavaCore.newLibraryEntry(javaProject.getPath().append("binary"), javaProject.getPath().append("binary_src"), null); newClasspath[classpath.length]= binaryFolder; javaProject.setRawClasspath(newClasspath, null); fImport.createCompilationUnit( "Provider.java", "package import_in;\n" + "\n" + "import import_use.List;\n" + "import java.io.File;\n" + "import java.util.ArrayList;\n" + "import java.util.Map;\n" + "import static java.lang.Math.PI;\n" + "\n" + "public class Provider {\n" + " public File useAsReturn() {\n" + " return null;\n" + " }\n" + " public void useInArgument(File file) {\n" + " file= null;\n" + " }\n" + " public void useInDecl() {\n" + " List list= null;\n" + " }\n" + " public int useInDecl2() {\n" + " return new ArrayList().size();\n" + " }\n" + " public Object useInDecl3() {\n" + " return new java.util.HashMap();\n" + " }\n" + " public void useInClassLiteral() {\n" + " Class clazz= File.class;\n" + " }\n" + " public void useArray() {\n" + " List[] lists= null;\n" + " }\n" + " public void useInLocalClass() {\n" + " class Local extends File {\n" + " private static final long serialVersionUID = 1L;\n" + " public Local(String s) {\n" + " super(s);\n" + " }\n" + " public void foo(Map map) {\n" + " }\n" + " public void bar(Byte b) {\n" + " }\n" + " }\n" + " }\n" + " public void useStaticImport() {\n" + " double i= PI;\n" + " }\n" + "}\n", true, null); IPackageFragment importUse= root.createPackageFragment("import_use", true, null); importUse.createCompilationUnit("List.java", "package import_use;" + "" + "public class List {" + "}", true, null); } private static void copyFilesFromResources(IProject project, String pathInRoot, String filePattern) throws CoreException, IOException { String[] folders= pathInRoot.split("/"); IFolder folder= project.getFolder(folders[0]); folder.create(true, true, null); for (int i= 1; i < folders.length; i++) { folder= folder.getFolder(folders[i]); folder.create(true, true, null); } Bundle bundle= RefactoringTestPlugin.getDefault().getBundle(); Enumeration/*URL*/ classUrls= bundle.findEntries("/resources/InlineMethodWorkspace/TestCases/" + pathInRoot, filePattern, false); while (classUrls.hasMoreElements()) { URL classUrl= (URL) classUrls.nextElement(); String urlFile= classUrl.getFile(); String fileName= urlFile.substring(urlFile.lastIndexOf('/') + 1); IFile file= folder.getFile(new Path(fileName)); file.create(classUrl.openStream(), true, null); } } public IPackageFragment getInvalidPackage() { return fInvalid; } public IPackageFragment getBugsPackage() { return fBugs; } public IPackageFragment getSimplePackage() { return fSimple; } public IPackageFragment getArgumentPackage() { return fArgument; } public IPackageFragment getNameConflictPackage() { return fNameConflict; } public IPackageFragment getCallPackage() { return fCall; } public IPackageFragment getExpressionPackage() { return fExpression; } public IPackageFragment getControlStatementPackage() { return fControlStatement; } public IPackageFragment getReceiverPackage() { return fReceiver; } public IPackageFragment getImportPackage() { return fImport; } public IPackageFragment getCastPackage() { return fCast; } public IPackageFragment getEnumPackage() { return fEnum; } public IPackageFragment getGenericPackage() { return fGeneric; } public IPackageFragment getBinaryPackage() { return fBinary; } public IPackageFragment getOperatorPackage() { return fOperator; } }